#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<string.h>
#include<unistd.h>


#define ONE   1       // 0000 0001
#define TWO   (1<<1)  // 0000 0010
#define THREE (1<<2)  // 0000 0100
#define FOUR  (1<<3)  // 0000 1000

void print(int flag)
{
  if(flag & ONE)
  {
    printf("one\n");
  }
  if(flag & TWO)
  {
    printf("two\n");
  }
  if(flag & THREE)
  {
    printf("three\n");
  }
  if(flag & FOUR)
  {
    printf("four\n");
  }
}
int main()
{
  print(ONE);
  printf("\n");

  print(TWO);
  printf("\n");

  print(ONE | TWO);
  printf("\n");

  print(ONE | TWO | THREE);
  printf("\n");

  print(ONE | TWO | THREE | FOUR);
  printf("\n");
  return 0;
}

//int main()
//{
//  umask(0);
//  int fd = open("log.txt",O_WRONLY | O_CREAT | O_APPEND,0666);
//  if(fd < 0)
//  {
//    perror("open");
//    return 1;
//  }
//  // ssize_t write(int fd, const void *buf, size_t count);
//  const char* msg = "hello linux file!\n";
//  write(fd,msg,strlen(msg));
//
//  close(fd);
//  return 0;
//}


//int main()
//{
//  umask(0);
//  int fd = open("log.txt",O_WRONLY | O_CREAT | O_TRUNC,0777);
//  if(fd < 0)
//  {
//    perror("open");
//    return 1;
//  }
//  // ssize_t write(int fd, const void *buf, size_t count);
//  //const char* msg = "hello linux file!\n";
//  //write(fd,msg,strlen(msg));
//
//  close(fd);
//  return 0;
//}

//int main()
//{
//  //umask(0);
//  // 使用系统调用打开文件 最后一个参数 mask
//  int fd = open("log.txt",O_WRONLY | O_CREAT | O_TRUNC,0666);
//  
//  if(fd < 0)
//  {
//    perror("open");
//    return 1;
//  }
//  const char* message = "hello linux file!\n";
//  write(fd,message,strlen(message));
//  close(fd);
//  // 以写方式打开文件
//  // 1、如果文件不存在，就在当前路径下新建指定的文件
//  // 2、默认打开文件的时候，会先清空文件 ->  等价于 >输出重定向
//  //FILE* fd = fopen("log.txt","w");
//  
//  // 以追加的方式打开文件
//  //FILE* fd = fopen("log.txt","a");
//  //if(fd == NULL) 
//  //{
//  //  perror("fopen");
//  //  return 1;
//  //}
//  //fprintf(fd,"helloworld,%d,%s,%lf\n",10,"abcd",3.14);
//  //fclose(fd);
//  return 0;
//}
